#include <iostream>
#include <vector>
#include <cmath>

using namespace std;
namespace static_func_test
{
    void myFunction()
    {
        static int myVariable = 0; // 静态变量在第一次调用时初始化
        myVariable++;              // 在每次函数调用时增加变量的值
        std::cout << "myVariable: " << myVariable << std::endl;
    }
}

namespace static_func_test_another
{
    void myFunction()
    {
        std::cout << "In namespace : "
                  << "static_func_test_another" << std::endl;
    }
}

void testStdFunc(int a, double b, int c)
{

    std::cout << "std::sqrt(a): " << std::sqrt(a) << std::endl;
    std::cout << "std::sqr(b): " << b * b << std::endl;
    a = -1 * a;
    c = abs(a);
    std::cout << "std::abs(a): " << std::abs(a) << std::endl;
}

int main()
{
    using static_func_test::myFunction;
    myFunction();                           // myVariable: 1
    static_func_test_another::myFunction(); // myVariable: 2
    myFunction();                           // myVariable: 3

    // std::vector<int> var_vec(100, 0);
    // for (auto &i : var_vec)
    // {
    //     var_vec.push_back(i);
    //     myFunction();
    // }
    myFunction();                           // myVariable: 3
    using static_func_test_another::myFunction;
    static_func_test_another::myFunction();

    testStdFunc(4, 2.0, 0);
    return 0;
}